The present invention relates generally to data processing systems and, more particularly, to a network proxy.
In modern xe2x80x9centerprisexe2x80x9d computing, a number of personal computers, workstations, and other devices such as mass storage subsystems, network printers and interfaces to the public telephony system, are typically interconnected in one or more computer networks. The personal computers and workstations are used by individual users to perform processing in connection with data and programs that may be stored in the network mass storage subsystems. In such an arrangement, the personal computers/workstations, operating as clients, typically download the data and programs from the network mass storage subsystems for processing. In addition, the personal computers or workstations will enable processed data to be uploaded to the network mass storage subsystems for storage, to a network printer for printing, to the telephony interface for transmission over the public telephony system, or the like. In such an arrangement, the network mass storage subsystems, network printers and telephony interface operate as servers, since they are available to service requests from all of the clients in the network. By organizing the network in such a manner, the servers are readily available for use by all of the personal computers/workstations in the network. Such a network may be spread over a fairly wide area, with the personal computers/workstations being interconnected by communication links such as electrical wires or optic fibers.
In addition to downloading information from servers for processing, a client, while processing a program, can remotely initiate processing by a server computer of particular routines and procedures (generally xe2x80x9cproceduresxe2x80x9d), in connection with certain xe2x80x9cparameterxe2x80x9d information provided by the client. After the server has processed the procedure, it will provide results of its processing to the client, which the client may thereafter use in its processing operations. Typically in such xe2x80x9cremote procedure callsxe2x80x9d the program will make use of a local xe2x80x9cstubxe2x80x9d which, when called, transfers the request to the server which implements the particular procedure, receives the results and provides them to the program. Conventionally, the stub must be compiled with the program, in which case the information needed to call the remote procedure must be determined at compile time, rather than at the time the program is run. Since the stub available to the client""s programs is static, it may be at best the closest that can be determined should be provided for the program when it (the program) is compiled. Accordingly, errors and inefficiencies can develop due to mismatches between the stub that is provided to a program and the requirements of the remote procedure that is called when the program is run.
A new and improved system and method for facilitating the obtaining and dynamic loading of a stub is provided to enable a program operating in one address space to remotely invoke processing of a method or procedure in another address space, so that the stub can be loaded by the program when it is run and needed, rather than being statically determined when the program is compiled. Indeed, the stub that is loaded can be obtained from the resource providing the remote method or procedure, and so it (the stub) can exactly define the invocation requirements of the remote method or procedure. Since the stub can be located and dynamically loaded while the program is being run, rather than being statically determined when the program is compiled, run-time errors and inefficiencies which may result from mismatches between the stub that is provided and the requirements of the remote method or procedure that is invoked can be minimized. In an alternative embodiment of the present invention, the stub is obtained from a lookup service to provide access to a service defined in the lookup service.
In brief summary, methods and systems consistent with an alternative embodiment of the present invention facilitate access to a service via a lookup service. A lookup service defines a network""s directory of services and stores references to these services. A client desiring use of a service on the network accesses the lookup service, which returns the stub information that facilitates the user""s access of the service. The client uses the stub information to access the service.
In a second alternative embodiment of the present invention, a network proxy is provided that facilitates the integration of orphan services into a network by enabling them to interact with a lookup service that contains an indication of the services that are available on the network. In this respect, the lookup service acts like a service registry. These orphan services typically reside on devices having too little memory to run the components necessary to be integrated into the network. Thus, the network proxy acts as a go between, by registering the orphan services with the lookup service so that clients may access them and by accessing services on behalf of the orphan services. As a result, the network proxy integrates orphan services into the network when they otherwise would be incapable of doing so.
In accordance with methods consistent with the present invention, a method is provided in a data processing system including a service on a device, a service registry, and a proxy. According to this method, the proxy receives a request from the service to register with the service registry, obtains information that facilitates accessing the service, and stores the information into the service registry.
In accordance with methods consistent with the present invention, a method for registering a service located on a device in a service registry is provided in a data processing system. According to this method, the service sends a request for registration in the service registry to a proxy server, whereupon the proxy server registers the service in the service registry to enable a client program to access the service, and the service receives a request from the client program for accessing the service.
In accordance with methods consistent with the present invention, a method is provided in a data processing system including a client program, a service registry containing a reference to a service on a device, and a proxy server. According to this method, the client program retrieves the reference from the service registry and uses the reference to send a request to access the service to the proxy server.
In accordance with systems consistent with the present invention, a data processing system is provided. The data processing system comprises a lookup server, a device, and a proxy server. The lookup server includes a memory with a lookup service containing registrations that facilitate access to corresponding services and includes a processor for running the lookup service. The device includes a memory containing an orphan service that requests registration in the lookup service and includes a processor for running the orphan service. The proxy server includes a memory containing a network proxy that receives the registration request from the orphan service and that registers the orphan service in the lookup service and includes a processor for running the network proxy.